package voxToolkit;

import grafico.Fabrica;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.BoxLayout;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

import audio.AudioSintetizado;
import audio.GerenteAudio;

public class VoxWarning extends JDialog implements ActionListener, KeyListener, FocusListener{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String mensagem;
	private String rotulo;
	private Boolean jaFalou = false;
	
	private GerenteAudio sintetizador;
	
	/**
	 * Cria uma caixa de mensagem com um botão "Ok".
	 * @param owner
	 * @param mensagem
	 */
	public VoxWarning(JFrame owner, String mensagem){
		this.mensagem = mensagem;
		this.rotulo = "Caixa de Mensagem";
		sintetizador = GerenteAudio.instancia();
		montaGUI(owner);
	}
	
	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public String getRotulo() {
		return rotulo;
	}

	private void montaGUI(JFrame owner){
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		setSize(new Dimension(300,150));		
		setLocationRelativeTo(owner);
		Container principal = this.getContentPane();
		JPanel painelMensagem = Fabrica.painelFundoAzul();
		principal.add(painelMensagem,BorderLayout.CENTER);
		JPanel painelBotoes = Fabrica.painelFundoAzul();
		principal.add(painelBotoes,BorderLayout.PAGE_END);		
			
		JLabel textoMensagem = Fabrica.labelBranco(mensagem);
		textoMensagem.addFocusListener(this);
		painelMensagem.add(textoMensagem);
		
		VoxButton btOk = new VoxButton("_ok", "Ok");		
		btOk.addActionListener(this);
		btOk.addKeyListener(this);
		btOk.addFocusListener(this);
		painelBotoes.add(btOk);
		
		setModal(true);
		setVisible(true);
		textoMensagem.setFocusable(true);
		textoMensagem.requestFocus();
	
	}
	
	
	@Override
	public void actionPerformed(ActionEvent e) {
		if ( e.getSource() instanceof VoxButton )
			dispose();
		
	}

	@Override
	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyTyped(KeyEvent e) {
		
		if ( e.getSource() instanceof VoxButton )
			if (e.getKeyChar() == KeyEvent.VK_ENTER)
				dispose();
	}

	@Override
	public void focusGained(FocusEvent e) {
		
		if ( e.getSource() instanceof JLabel ){
			
			if (!jaFalou){
				sintetizador.falaSintetizada(this.getRotulo() + ". " + this.mensagem);
				
				jaFalou = true;
			}
			else{
				sintetizador.abortaAudio();
				sintetizador.falaSintetizada(this.mensagem);
			}
		}
		
	}

	@Override
	public void focusLost(FocusEvent arg0) {
		// TODO Auto-generated method stub
		
	}

}
